home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2002 January / maximum-cd-2002-01.iso / Files / Mechwarrior 4 Mapping / Materials / Custom Scripts / mst-combatzone.abl < prev    next >
Encoding:
Text File  |  2001-09-12  |  12.4 KB  |  478 lines

  1.  // Required map objects (Navpoints) needed to get this gametype working.
  2.  // This must be placed as navpoints using the mission editor.
  3.  // Team1_Dropzone
  4.  // Team2_Dropzone
  5.  // defend1
  6.  // defend2
  7.  // defend3
  8.  // defend4
  9.  // combatzone
  10. //*********************************************************************************
  11.  
  12. fsm combatzone : integer;
  13.  
  14.      const
  15.  
  16.         #include_ <content\ABLScripts\mwconst.abi>
  17.  
  18.      type
  19.  
  20.         #include_ <content\ABLScripts\mwtype.abi>
  21.  
  22.       var
  23.  
  24.         static integer        Team1;
  25.         static integer        Team2;
  26.  
  27.         static integer        Radius;
  28.         static integer        Radius2;
  29.  
  30.         static integer        team1_def1;
  31.         static integer        team1_def2;
  32.         static integer        team1_def3;
  33.         static integer        team1_def4;
  34.         static integer        team1_com1;
  35.  
  36.         static integer        team2_def1;
  37.         static integer        team2_def2;
  38.         static integer        team2_def3;
  39.         static integer        team2_def4;
  40.         static integer        team2_com1;
  41.         static integer           Currenttime;
  42.  
  43.  
  44.         static integer        Defend_time1;
  45.         static integer        Defend_time2;
  46.         static integer        Defend_time3;
  47.         static integer        Defend_time4;
  48.         static integer        combat_time1;
  49.  
  50.         static boolean        t1inDef1;
  51.         static boolean        t1inDef2;
  52.         static boolean        t1inDef3;
  53.         static boolean        t1inDef4;
  54.         static boolean        t1incom1;
  55.  
  56.         static boolean        t2inDef1;
  57.         static boolean        t2inDef2;
  58.         static boolean        t2inDef3;
  59.         static boolean        t2inDef4;
  60.         static boolean        t2incom1;
  61.  
  62.  
  63.         static ObjectID     Defend1;
  64.         static ObjectID     Defend2;
  65.         static ObjectID     Defend3;
  66.         static ObjectID     Defend4;
  67.         static ObjectID     combatzone;
  68.         static ObjectID     Team1_Dropzone;
  69.         static ObjectID     Team2_Dropzone;
  70.  
  71. function init;
  72.     var
  73.  
  74.     code
  75.       radius = 150;       //defend zones
  76.       radius2 = 200;      // combatzone
  77.  
  78.       Settimer(gti_timer_1,0);
  79.       Settimer(gti_timer_2,0);
  80.       Settimer(gti_timer_3,0);
  81.       Settimer(gti_timer_4,0);
  82.       Settimer(gti_timer_5,0);
  83.  
  84.       Defend_time1 = gti_timer_1;
  85.       Defend_time2 = gti_timer_2;
  86.       Defend_time3 = gti_timer_3;
  87.       Defend_time4 = gti_timer_4;
  88.       combat_time1 = gti_timer_1;
  89.  
  90.       Team1 = TeamObjectID(1);
  91.       Team2 = TeamObjectID(2);
  92.  
  93.       t1inDef1 = false;
  94.       t1inDef2 = false;
  95.       t1inDef3 = false;
  96.       t1inDef4 = false;
  97.       t1incom1 = false;
  98.  
  99.       t2inDef1 = false;
  100.       t2inDef2 = false;
  101.       t2inDef3 = false;
  102.       t2inDef4 = false;
  103.       t2incom1 = false;
  104.  
  105.       Team1_Dropzone = ena_Team1_Dropzone;
  106.       Team2_Dropzone = ena_Team2_Dropzone;
  107.       Defend1 = ena_defend1;
  108.       Defend2 = ena_defend2;
  109.       Defend3 = ena_defend3;
  110.       Defend4 = ena_defend4;
  111.       combatzone = ena_combatzone;
  112.  
  113.       SetCustomBucketName("CombatZone");
  114.       SetFlagsEnabled(FLAGS_HIDE);
  115.       TrackBucket(Bucket_CUSTOM,0,true);
  116.       AddStandardBuckets;
  117.       AddCustomBucketParameter(Bucket_FRIENDLY_KILLS,-500);
  118.       AddCustomBucketParameter(Bucket_SUICIDES,-1500);
  119.       AddCustomBucketParameter(Bucket_ENEMY_DAMAGE_INFLICT, 1);
  120.       AddCustomBucketParameter(Bucket_ENEMY_KILLS, 300);
  121.       AddCustomBucketParameter(Bucket_FRIENDLY_DAMAGE_INFLICT,-2);
  122.  
  123. endfunction;
  124.  
  125. state startState;
  126.  
  127.     code
  128.  
  129.         RevealNavPoint(ena_defend1);
  130.         RevealNavPoint(ena_defend2);
  131.         RevealNavPoint(ena_defend3);
  132.         RevealNavPoint(ena_defend4);
  133.         RevealNavPoint(ena_combatzone);
  134.  
  135.         // Set player navpoints at start of game to.....
  136.         TeamSetNav(1,ena_combatzone);
  137.         TeamSetNav(2,ena_combatzone);
  138.  
  139.         Trans thezones;
  140.  
  141.  
  142. endstate;
  143.  
  144.  
  145. state thezones;
  146.  
  147.     code
  148.  
  149. ////////////////////////////////////////////////////////////////////////
  150. //
  151. //   Defend zone 1
  152. //
  153. ///////////////////////////////////////////////////////////////////////
  154.     // Defender zone 1 check for team1
  155.  
  156.          if ((t1inDef1) == false) then
  157.             if (IsWithin(TeamObjectID(1),defend1,radius) == true) then
  158.                if (IsWithin(TeamObjectID(2),defend1,radius) == false) then
  159.                t1inDef1 = true;
  160.                resettimer(Defend_time1);
  161.                team1_def1 = 1;
  162.                endif;
  163.             endif;
  164.          endif;
  165.  
  166.          if ((t1inDef1) == true) then
  167.             if (timegreater(Defend_time1,team1_def1)) then
  168.                if (IsWithin(TeamObjectID(1),defend1,radius) == true) then
  169.              if (IsWithin(TeamObjectID(2),defend1,radius) == false) then
  170.                Currenttime    = Gettimer(Defend_time1);
  171.                if ((Currenttime) >= 10) then
  172.                  addpoints(Team1, 75);
  173.                  resettimer(Defend_time1);
  174.                  endif;
  175.  
  176.                 else
  177.                 t1inDef1 = false;
  178.                 endif;
  179.               endif;
  180.             endif;
  181.               endif;
  182.  
  183.               // Defender zone 1 check for team2
  184.  
  185.          if ((t2inDef1) == false) then
  186.             if (IsWithin(TeamObjectID(2),defend1,radius) == true) then
  187.                if (IsWithin(TeamObjectID(1),defend1,radius) == false) then
  188.                t2inDef1 = true;
  189.                resettimer(Defend_time1);
  190.                team2_def1 = 1;
  191.                endif;
  192.             endif;
  193.          endif;
  194.  
  195.          if ((t2inDef1) == true) then
  196.             if (timegreater(Defend_time1,team2_def1)) then
  197.                if (IsWithin(TeamObjectID(2),defend1,radius) == true) then
  198.              if (IsWithin(TeamObjectID(1),defend1,radius) == false) then
  199.                Currenttime    = Gettimer(Defend_time1);
  200.                if ((Currenttime) >= 10) then
  201.                  addpoints(Team2, 75);
  202.                  resettimer(Defend_time1);
  203.                  endif;
  204.  
  205.                 else
  206.                 t2inDef1 = false;
  207.                 endif;
  208.               endif;
  209.             endif;
  210.               endif;
  211.  
  212. ////////////////////////////////////////////////////////////////////////
  213. //
  214. //   Defend zone 2
  215. //
  216. ///////////////////////////////////////////////////////////////////////
  217.  
  218.     // Defender zone 2 check for team1
  219.  
  220.          if ((t1inDef2) == false) then
  221.             if (IsWithin(TeamObjectID(1),defend2,radius) == true) then
  222.                if (IsWithin(TeamObjectID(2),defend2,radius) == false) then
  223.                t1inDef2 = true;
  224.                resettimer(Defend_time2);
  225.                team1_def2 = 1;
  226.                endif;
  227.             endif;
  228.          endif;
  229.  
  230.          if ((t1inDef2) == true) then
  231.             if (timegreater(Defend_time2,team1_def2)) then
  232.                if (IsWithin(TeamObjectID(1),defend2,radius) == true) then
  233.              if (IsWithin(TeamObjectID(2),defend2,radius) == false) then
  234.                Currenttime    = Gettimer(Defend_time2);
  235.                if ((Currenttime) >= 10) then
  236.                  addpoints(Team1, 75);
  237.                  resettimer(Defend_time2);
  238.                  endif;
  239.  
  240.                 else
  241.                 t1inDef2 = false;
  242.                 endif;
  243.               endif;
  244.             endif;
  245.               endif;
  246.  
  247.               // Defender zone 2 check for team2
  248.  
  249.          if ((t2inDef2) == false) then
  250.             if (IsWithin(TeamObjectID(2),defend2,radius) == true) then
  251.                if (IsWithin(TeamObjectID(1),defend2,radius) == false) then
  252.                t2inDef2 = true;
  253.                resettimer(Defend_time2);
  254.                team2_def2 = 1;
  255.                endif;
  256.             endif;
  257.          endif;
  258.  
  259.          if ((t2inDef2) == true) then
  260.             if (timegreater(Defend_time2,team2_def2)) then
  261.                if (IsWithin(TeamObjectID(2),defend2,radius) == true) then
  262.              if (IsWithin(TeamObjectID(1),defend2,radius) == false) then
  263.                Currenttime    = Gettimer(Defend_time2);
  264.                if ((Currenttime) >= 10) then
  265.                  addpoints(Team2, 75);
  266.                  resettimer(Defend_time2);
  267.                  endif;
  268.  
  269.                 else
  270.                 t2inDef2 = false;
  271.                 endif;
  272.               endif;
  273.             endif;
  274.               endif;
  275.  
  276. ////////////////////////////////////////////////////////////////////////
  277. //
  278. //   Defend zone 3
  279. //
  280. ///////////////////////////////////////////////////////////////////////
  281.      // Defender zone 3 check for team1
  282.  
  283.          if ((t1inDef3) == false) then
  284.             if (IsWithin(TeamObjectID(1),defend3,radius) == true) then
  285.                if (IsWithin(TeamObjectID(2),defend3,radius) == false) then
  286.                t1inDef3 = true;
  287.                resettimer(Defend_time3);
  288.                team1_def3 = 1;
  289.                endif;
  290.             endif;
  291.          endif;
  292.  
  293.          if ((t1inDef3) == true) then
  294.             if (timegreater(Defend_time3,team1_def3)) then
  295.                if (IsWithin(TeamObjectID(1),defend3,radius) == true) then
  296.              if (IsWithin(TeamObjectID(2),defend3,radius) == false) then
  297.                Currenttime    = Gettimer(Defend_time3);
  298.                if ((Currenttime) >= 10) then
  299.                  addpoints(Team1, 75);
  300.                  resettimer(Defend_time3);
  301.                  endif;
  302.  
  303.                 else
  304.                 t1inDef3 = false;
  305.                 endif;
  306.               endif;
  307.             endif;
  308.               endif;
  309.  
  310.               // Defender zone 3 check for team2
  311.  
  312.          if ((t2inDef3) == false) then
  313.             if (IsWithin(TeamObjectID(2),defend3,radius) == true) then
  314.                if (IsWithin(TeamObjectID(1),defend3,radius) == false) then
  315.                t2inDef3 = true;
  316.                resettimer(Defend_time3);
  317.                team2_def3 = 1;
  318.                endif;
  319.             endif;
  320.          endif;
  321.  
  322.          if ((t2inDef3) == true) then
  323.             if (timegreater(Defend_time3,team2_def3)) then
  324.                if (IsWithin(TeamObjectID(2),defend3,radius) == true) then
  325.              if (IsWithin(TeamObjectID(1),defend3,radius) == false) then
  326.                Currenttime    = Gettimer(Defend_time3);
  327.                if ((Currenttime) >= 10) then
  328.                  addpoints(Team2, 75);
  329.                  resettimer(Defend_time3);
  330.                  endif;
  331.  
  332.                 else
  333.                 t2inDef3 = false;
  334.                 endif;
  335.               endif;
  336.             endif;
  337.               endif;
  338.  
  339. ////////////////////////////////////////////////////////////////////////
  340. //
  341. //   Defend zone 4
  342. //
  343. ///////////////////////////////////////////////////////////////////////
  344.  
  345.      // Defender zone 4 check for team1
  346.  
  347.          if ((t1inDef4) == false) then
  348.             if (IsWithin(TeamObjectID(1),defend4,radius) == true) then
  349.                if (IsWithin(TeamObjectID(2),defend4,radius) == false) then
  350.                t1inDef4 = true;
  351.                resettimer(Defend_time4);
  352.                team1_def4 = 1;
  353.                endif;
  354.             endif;
  355.          endif;
  356.  
  357.          if ((t1inDef4) == true) then
  358.             if (timegreater(Defend_time4,team1_def4)) then
  359.                if (IsWithin(TeamObjectID(1),defend4,radius) == true) then
  360.              if (IsWithin(TeamObjectID(2),defend4,radius) == false) then
  361.                Currenttime    = Gettimer(Defend_time4);
  362.                if ((Currenttime) >= 10) then
  363.                  addpoints(Team1, 75);
  364.                  resettimer(Defend_time4);
  365.                  endif;
  366.  
  367.                 else
  368.                 t1inDef4 = false;
  369.                 endif;
  370.               endif;
  371.             endif;
  372.               endif;
  373.  
  374.               // Defender zone 4 check for team2
  375.  
  376.          if ((t2inDef4) == false) then
  377.             if (IsWithin(TeamObjectID(2),defend4,radius) == true) then
  378.                if (IsWithin(TeamObjectID(1),defend4,radius) == false) then
  379.                t2inDef4 = true;
  380.                resettimer(Defend_time4);
  381.                team2_def4 = 1;
  382.                endif;
  383.             endif;
  384.          endif;
  385.  
  386.          if ((t2inDef4) == true) then
  387.             if (timegreater(Defend_time4,team2_def4)) then
  388.                if (IsWithin(TeamObjectID(2),defend4,radius) == true) then
  389.              if (IsWithin(TeamObjectID(1),defend4,radius) == false) then
  390.                Currenttime    = Gettimer(Defend_time4);
  391.                if ((Currenttime) >= 10) then
  392.                  addpoints(Team2, 75);
  393.                  resettimer(Defend_time4);
  394.                  endif;
  395.  
  396.                 else
  397.                 t2inDef4 = false;
  398.                 endif;
  399.               endif;
  400.             endif;
  401.               endif;
  402.  
  403. ////////////////////////////////////////////////////////////////////
  404. //
  405. // Combat Zone
  406. //
  407. ////////////////////////////////////////////////////////////////////
  408.  
  409.      // Combatzone zone 1 check for team1
  410.  
  411.          if ((t1incom1) == false) then
  412.             if (IsWithin(TeamObjectID(1),combatzone,radius2) == true) then
  413.                if (IsWithin(TeamObjectID(2),combatzone,radius2) == false) then
  414.                t1incom1 = true;
  415.                resettimer(combat_time1);
  416.                team1_com1 = 1;
  417.                endif;
  418.             endif;
  419.          endif;
  420.  
  421.          if ((t1incom1) == true) then
  422.             if (timegreater(combat_time1,team1_com1)) then
  423.                if (IsWithin(TeamObjectID(1),combatzone,radius2) == true) then
  424.              if (IsWithin(TeamObjectID(2),combatzone,radius2) == false) then
  425.                Currenttime    = Gettimer(combat_time1);
  426.                if ((Currenttime) >= 60) then
  427.                  addpoints(Team1, 3000);
  428.                  resettimer(combat_time1);
  429.                  endif;
  430.  
  431.                 else
  432.                 t1incom1 = false;
  433.                 endif;
  434.               endif;
  435.             endif;
  436.               endif;
  437.  
  438.               // Combatzone 1 check for team2
  439.  
  440.  
  441.          if ((t2incom1) == false) then
  442.             if (IsWithin(TeamObjectID(2),combatzone,radius2) == true) then
  443.                if (IsWithin(TeamObjectID(1),combatzone,radius2) == false) then
  444.                t2incom1 = true;
  445.                resettimer(combat_time1);
  446.                team2_com1 = 1;
  447.                endif;
  448.             endif;
  449.          endif;
  450.  
  451.          if ((t2incom1) == true) then
  452.             if (timegreater(combat_time1,team2_com1)) then
  453.                if (IsWithin(TeamObjectID(2),combatzone,radius2) == true) then
  454.              if (IsWithin(TeamObjectID(1),combatzone,radius2) == false) then
  455.                Currenttime    = Gettimer(combat_time1);
  456.                if ((Currenttime) >= 60) then
  457.                  addpoints(Team2, 3000);
  458.                  resettimer(combat_time1);
  459.                  endif;
  460.  
  461.                 else
  462.                 t2incom1 = false;
  463.                 endif;
  464.               endif;
  465.             endif;
  466.               endif;
  467.  
  468. endstate;
  469.  
  470. state deadState;
  471.     code
  472. endstate;
  473.  
  474.  
  475. endfsm.
  476. //******************************************************************
  477.  
  478.